home *** CD-ROM | disk | FTP | other *** search
- {
- >The utility I wrote, just Writes the contents of the $A000 from one to
- >63999 (ya know 320x200), to a File. then I bring it to an Array, and
- >then I try to reWrite it to the video. HOWEVER, I noticed that the
- >palette inFormation is incorrect. Is there any way to fix this, since
- >it comes out in a messed up color.
-
- How about writing also the palette info to the File ? You're probably
- BlockWriting, so this should not be a big problem. You just have to
- fetch the palette info through inT $10, Function $1017 :
- }
-
- Type
- TCouleurVGA =
- Record
- Rouge,
- Vert,
- Bleu : Byte ;
- end ;
-
- TPaletteVGA = Array[0..255] of TCouleurVGA ;
-
- Procedure LitPalette(Var p : TPaletteVGA) ; Assembler ;
- Asm
- { Lecture table couleurs }
- Mov AX, $1017
- Mov BX, 0
- Mov CX, 256
- LES DX, p
- Int $10
- end ;
-
- {
- The reverse :
- }
-
- Procedure AffectePalette(Var Palette : TPaletteVGA) ; Assembler ;
- Asm
- Mov AX, $1012
- Xor BX, BX
- Mov CX, 256
- LES DX, Palette
- Int $10
- end ;
-
- {
- >Also, I have successfully written color cycling, by changing each color
- >index in a loop. Only problem is that you can see it 'redrawing'. Is
- >there anyway ot change them all simultaneously, instead of a loop? I am
- >working in Pascal, using bits and chunks of Inline Asm.
-
- I'm _not_ sure the following is the answer you expect :
- }
-
- Procedure AffectePaletteDeA(Var Palette ; De, A : Integer) ; Assembler ;
- Asm
- Mov AX, $1012
- Mov BX, De
- Mov CX, A
- Sub CX, BX
- Inc CX
- LES DX, Palette
- Int $10
- end ;
-
- Var
- Pal : TPaletteVGA ;
-
- begin
- { Here, fill the colors you need }
- { Say, you modified colors 37 to 124 into Pal Array }
- AffectePaletteDeA(Pal[37], 37, 124) ;
- end.
-